﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using FrbaBus;

namespace FrbaBus.Login
{
    public partial class FormLogin : Form
    {
        /*Lo declaro de esta manera asi se lo envia al FormMenuPrincipal*/
        private Usuario usuario = new Usuario();
        private string userName;
        private string password;
        private bool primeraVezCargarUsuario = true;


        private int cantidadIntentos = 0;
        private int cantidadIntentosRestantes;

        public FormLogin()
        {
            InitializeComponent();
        }

        private void buttonIngresar_Click(object sender, EventArgs e)
        {        


            userName = textUsuario.Text;
            password = textContrasena.Text;

            /* Verifica que el nombre de ususario sea valido ya que sino no bloquea ninguna cuenta*/
            if (usuario.nombreDeUsuarioValido(userName))
            {

                /* Verica que el usuario este habilitado*/
                if (usuario.Habilitado)
                {

                    if (primeraVezCargarUsuario)
                    {
                        usuario.Nombre = userName;
                        primeraVezCargarUsuario = false;
                        cantidadIntentos = 0;
                    }


                    /* verifica que el nombre del usuario sea el mismo que el anterior ingresado */
                    if ((userName == usuario.Nombre) && !primeraVezCargarUsuario)
                    {
                        /* verifico que el nombre de usuario y password sean validos*/
                        if (usuario.buscarmeEnBase(userName, password))
                        {

                            MessageBox.Show("Usuario Logeado Correctamente");

                        }
                        else
                        {
                            cantidadIntentos++;
                            /* verifico que el nombre de usuario y password sean validos*/
                            if (usuario.LoginFallidos > cantidadIntentos)
                            {
                                cantidadIntentosRestantes = usuario.LoginFallidos - cantidadIntentos;
                                if (cantidadIntentosRestantes > 1) { MessageBox.Show("Password Incorrecto le quedan " + cantidadIntentosRestantes.ToString() + " intentos"); }
                                else { MessageBox.Show("Password Incorrecto le queda " + cantidadIntentosRestantes.ToString() + " intento"); }
                            }
                            /* en caso que no le queden mas intentos */
                            else
                            {
                                usuario.inhabilitarUsuario();
                                MessageBox.Show("Usuario Inhabilitado por superar la cantidad de intentos fallidos");
                            }
                        }
                    }
                    /* en caso que el nombre de usuario no sea el mismo que el anterior ingresado */
                    else
                    {
                        usuario.Nombre = userName;
                        cantidadIntentos = 0;
                        /* verifico que el nombre de usuario y password sean validos*/
                        if (usuario.buscarmeEnBase(userName, password))
                        {

                            MessageBox.Show("Usuario Logeado Correctamente");

                        }
                        else
                        {
                            cantidadIntentos++;
                            /* verifico que le queden intentos */
                            if (usuario.LoginFallidos > cantidadIntentos)
                            {
                                cantidadIntentosRestantes = usuario.LoginFallidos - cantidadIntentos;
                                if (cantidadIntentosRestantes > 1) { MessageBox.Show("Password Incorrecto le quedan " + cantidadIntentosRestantes.ToString() + " intentos"); }
                                else { MessageBox.Show("Password Incorrecto le queda " + cantidadIntentosRestantes.ToString() + " intento"); }
                            }
                            /* en caso que no le queden mas intentos */
                            else
                            {
                                usuario.inhabilitarUsuario();
                                MessageBox.Show("Usuario Inhabilitado por superar la cantidad de intentos fallidos");
                            }
                        }
                    }

                }


                /* En caso que el usuario no este habilitado */
                else { MessageBox.Show("Este Usuario se encuentra Inhabilitado"); }



            }
            /* El nombre de usuario no es valido, considero que no hay ninguna restriccion ya que no voy a poder bloquear ningun usuario*/
            else 
            {                
                MessageBox.Show("Usuario y/o Password Incorrectos intentelo nuevamente");
            }
            
            

        }

       
    }
}
